1. Field of the Invention
The present invention relates generally to computers and, more particularly, to computer software debugging, verifying and validating devices and techniques.
2. Description of Related Art
The process of correcting developmental errors within computer software code is commonly referred to as debugging. A typical debugging procedure entails a software designer executing the prototype software and attempting to determine which portions of the code are responsible for incorrect operation. The software developer typically examines a failure within the software code and attempts to determine the portion, module or line of software code that is responsible for the failure.
Conventional debugging techniques include steps of inserting output statements after subsections of code to notify the developer of the results either before, during or after the execution of the remainder of the program. By incorporating output statements into the code, the developer can more quickly deduce the part or parts of code that are yielding the wrong in-process answer, thereby achieving fault isolation to the respective subsection of code. The software developer frequently employees a standard case to test and debug the code. Using a standard case, the software developer can test each result from each output statement in the code for accuracy, by comparing each result with an expected result for the standard case.
Although the process of debugging has been automated to some extent through the use of error codes and commercial debuggers for popular development languages, the process of debugging remains a very time consuming and costly part of the software development process.
Even after the software is developed, it must be verified and validated. Software verification and validation generally encompasses an acceptance process in which the software is functionally verified to be correct when its operation is compared to the required performance defined in the design specification. Operational characteristics of the software are verified within the bounds of the development specification. The verification and validation step is typically implemented both internally to the software development establishment and by the ultimate customer, such as the federal government. For example, the U.S. Department of Defense may have a software product delivered to control a missile. The U.S. Department of Defense in this instance would obviously be interested in conducting an independent verification of the functionality of the software.
The process of verifying the operation of software under all operational modes is typically a very time-consuming and costly effort, in which all possible scenarios are executed for the software, to identify its response under all conditions. The conventional approach comprises a user stepping through operational modes and measuring a software's responses. By doing so, the user can verify the software's functionality with some certainty, thereby validating it for operation in the intended application. The amount of effort required for software verification and validation is typically augmented by a user implementing extensive examination of each line of the software code. This line-by-line examination of the software code, in addition to other available techniques, is typically implemented to ensure that the software will operate properly under all operational modes. Proper functionality of the software code should include performance reliability and robust operation. Efforts continue in the prior art for enhancing the efficiency and efficacy of software debugging, verification and validation procedures, which typically must be implemented both during and after the design phase of the software is completed.